﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace StudyIO
{
    public partial class frmFIleStream : Form
    {
        public frmFIleStream()
        {
            InitializeComponent();
        }

        private void btnWrite_Click(object sender, EventArgs e)
        {
            ////创建一个temp.txt文件的文件流，temp.txt 处理的方式 如果存在就打开否则就创建文件, 对文件执行什么操作 写入
            //FileStream fs = new FileStream("temp.txt", FileMode.OpenOrCreate, FileAccess.Write);

            //byte[] bytes = Encoding.Default.GetBytes("我是要写入的内容");

            ////写入流文件 bytes 开始写入的位置，写入多长
            //fs.Write(bytes, 0, bytes.Length);

            ////清除缓存区
            //fs.Flush();
            ////关闭流
            //fs.Close();
            ////清除占用的资源
            //fs.Dispose();

            //简化写法，using关键字处理可以引用命令空间之外还可以用来清除资源
            using (FileStream fs = new FileStream("temp.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                byte[] bytes = Encoding.Default.GetBytes("我是要写入的内容");

                //写入流文件 bytes 开始写入的位置，写入多长
                fs.Write(bytes, 0, bytes.Length);
            }
            MessageBox.Show("写入成功!");
        }

        private void btnRead_Click(object sender, EventArgs e)
        {
            using (FileStream fs = new FileStream("temp.txt", FileMode.OpenOrCreate, FileAccess.Read))
            {
                //间隙一个1M 的缓存区
                byte[] buffer = new byte[1024 * 1024];
                int length = fs.Read(buffer, 0, buffer.Length);

                string content = Encoding.Default.GetString(buffer, 0, length);
                Console.WriteLine(content);
            }

            MessageBox.Show("读取成功！切换到控制台查看");
        }

        private void btnAppend_Click(object sender, EventArgs e)
        {
            using (FileStream fs = new FileStream("temp.txt", FileMode.Append, FileAccess.Write))
            {
                byte[] bytes = Encoding.Default.GetBytes("我是要追加的内容");

                //写入流文件 bytes 开始写入的位置，写入多长
                fs.Write(bytes, 0, bytes.Length);
            }

            MessageBox.Show("追加成功!");
        }
    }
}
